Gesture-based interaction techniques provide an intuitive and natural way for users to interact with computing devices. Many devices and systems offer the user the ability to interact using simple, easily detected gestures such a pinch or swipe on a touch sensitive screen. Such gesture-based interactions can greatly enhance the user experience.
However, in order to support richer or more diverse gestures, the computational complexity in accurately detecting and recognizing the gestures can increase significantly. For example, as the number and/or complexity of the gestures increases, the computational complexity involved in detecting a gesture can cause a noticeable lag between the gesture being performed and an action being taken by the computing device. In the case of some applications, such as gaming, such a lag can adversely affect the user experience.
In addition, as the use of gesture-based user interaction becomes more commonplace, a wider variety of users are interacting in this way. For example, gesturing users come from a wider ages range, and have varying experience levels. This means that the same gesture can be performed quite differently by different users, placing challenges on the gesture recognition technique to produce consistent and accurate detection.
Furthermore, the use of natural user interfaces is becoming more widespread, in which users interact more intuitively with computing devices using, for example, camera-based input or devices for tracking the motion of parts of the user's body. Such natural user interfaces enable in input of gestures that are more “free” (i.e. less constrained) that those performed, for example, on touch sensitive screens. This gives rise to more degrees of freedom and variation in the gestures, further increasing the demands on the gesture recognition technique.
The embodiments described below are not limited to implementations which solve any or all of the disadvantages of known gesture recognition techniques.